// AI流式响应模拟工具
export interface AiResponse {
  content: string;
  isComplete: boolean;
}

// 模拟AI响应数据
const mockResponses = [
  "您好！我是您的AI助手，很高兴为您服务。",
  "我可以帮助您解答关于学生管理系统的各种问题。",
  "比如：学生信息查询、成绩管理、考勤统计等。",
  "请告诉我您需要什么帮助？",
  "我会尽力为您提供准确和有用的信息。"
];

// 模拟流式AI响应
export const mockAiResponse = async function* (userMessage: string): AsyncGenerator<AiResponse, void, unknown> {
  // 根据用户消息选择不同的响应
  let responseText = "";
  
  if (userMessage.includes("学生") || userMessage.includes("student")) {
    responseText = "我可以帮您管理学生信息、查询档案、统计数据。需要什么具体帮助？";
  } else if (userMessage.includes("成绩") || userMessage.includes("grade")) {
    responseText = "我可以帮您录入成绩、生成报表、分析数据。有什么需要处理的？";
  } else if (userMessage.includes("考勤") || userMessage.includes("attendance")) {
    responseText = "我可以帮您记录考勤、生成报表、分析出勤情况。需要什么帮助？";
  } else if (userMessage.includes("帮助") || userMessage.includes("help")) {
    responseText = "我可以帮您处理学生管理、成绩管理、考勤统计等任务。有什么问题？";
  } else if (userMessage.includes("你好") || userMessage.includes("hello") || userMessage.includes("hi")) {
    responseText = "你好！我是AI助手，有什么可以帮您的？";
  } else {
    responseText = "请告诉我您需要什么帮助？";
  }

  // 模拟流式输出
  const words = responseText.split('');
  let currentText = '';
  
  for (let i = 0; i < words.length; i++) {
    currentText += words[i];
    yield {
      content: currentText,
      isComplete: i === words.length - 1
    };
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 30 + Math.random() * 50));
  }
};

// 获取随机响应
export const getRandomResponse = (): string => {
  const responses = [
    "您好！有什么可以帮助您的？",
    "需要什么帮助？",
    "有什么问题吗？",
    "我可以帮您处理学生管理相关任务。",
    "请告诉我您的需求。"
  ];
  
  return responses[Math.floor(Math.random() * responses.length)];
};

// 检查是否为有效问题
export const isValidQuestion = (message: string): boolean => {
  const trimmed = message.trim().toLowerCase();
  return trimmed.length > 0 && 
         !trimmed.match(/^[^\w\u4e00-\u9fa5]*$/) && // 不是纯符号
         trimmed.length <= 500; // 不超过500字符
};
